﻿Zaru Pitts Memorial Test Jig

  These units were used to test each manufactured console at the factory.  Implemented as a serial device, you'd plug it into controller port 1 (though arguably it should always work in the first populated port).  It borrows the same address space used by mempaks and transfer paks; a r/w test of block 0 will ID it vs mempaks and device ID prevents a false positive for transfer paks.
  The test units themselves have a large yellow button, LED, earphone, 8bit DIP switch, and a control dongle you'd "shake" to during the controller test.

  Use normal controller slot read/write commands, usually setting an entire block to a given value.

0800	(r/w) LED control
1000	(r/w) memory, likely free for any use
1800	(r) Serial Power Test
	01	GND port 2 (0 if good)
	02	GND port 3 (0 if good)
	04	GND port 4 (0 if good)
	08	3.3v port 2 (1 if good)
	10	3.3v port 3 (1 if good)
	20	3.3v port 4 (1 if good)
	40	GND cart slot 1 (1 if good)
	80	GND cart slot 2 (1 if good)
	(w) Serial Input Test; ironicly same~ish as Aleck64 JAMMA input
	01	up
	02	down
	04	left
	08	right
	10	A
	20	B
	40	C
	80	D
2000	(r) Other Signals
	01	5v console (1 if good)
	02	EUT power off (pretty sure state of reset button)
	04	big yellow button (0 while pressed)
	(w) Signal Select
	07	controller mask
		0	port 2 selected
		1	port 2 selected
		2	port 2 selected
	08	video format; MPAL apparently isn't tested
		0	PAL
		1	NTSC
	10	video signal
		0	s-video
		1	composite
	20	restart board flag; set after changing command mode to push it out
2800	(w) Set Command Mode
	07	command
		0	ground
		1	DIP switches & voltages
		2	address upper 16bits
		3	address lower 16bits
		4	cart interrupt & read/write counts
		5	reset time
		6	reserved
		7	no operation
	08	enable read/write check of address; can be disabled without pushing a new command
	C0	audio channel mask
		40	left channel
		80	right channel
	(r) Command Data: High Byte
	(r) in ground mode
	01	ground 8 (0 if good)
	02	ground 9 (0 if good)
	04	ground10 (0 if good)
	08	ground11 (0 if good)
	10	cic1  (1 if good)
	20	cic2  (1 if good)
	40	clock (1 if good)
	80	sync  (1 if good)
	(r) in DIP switches & voltages mode
	FF	8bit DIP switch
		03	memory size
			0	4MB rdram
			1	6MB rdram
			2	8MB rdram
	(r) in address upper 16bits mode
	FF	upper 8 bits of address upper HW (FF000000)
	(r) in address lower 16bits mode
	FF	lower 8 bits of address upper HW (00FF0000)
	(r) in cart interrupt & read/write counts mode
	80	cart interrupt state (1 good)
	(r) in reset time mode
	FF	upper 8 bits of reset time (FF00); must be between 15 & 480 ms
3000	(r) Command Data: Low Byte
	(r) in ground mode; note software only tests grounds 1, 3, 4, 5
	01	ground 0 (0 if good)
	02	ground 1 (0 if good)
	04	ground 2 (0 if good)
	08	ground 3 (0 if good)
	10	ground 4 (0 if good)
	20	ground 5 (0 if good)
	40	ground 6 (0 if good)
	80	ground 7 (0 if good)
	(r) in DIP switches & voltages mode
	02	12v line >= 10v (1 if good)
	08	3.3v line 0 (1 if good)
	20	3.3v line 1 (1 if good)
	10	3.3v line 2 (1 if good)
	(r) in address upper 16bits mode
	FF	upper 8 bits of address lower HW (0000FF00)
	(r) in address lower 16bits mode
	FF	lower 8 bits of address lower HW (000000FF)
	(r) in cart interrupt & read/write counts mode
	0F	mode
		0	read bytes shift
		4	write bytes shift
	(r) in reset time mode (units of 256 microseconds)
	FF	upper 8 bits of reset time (FF00); must be between 15 & 480 ms

  When writing, duplicate data in all 32 bytes sent.  Only the first byte is needed when reading.

  The LED is vital!  Zaru is considered present by writing 0x55 to the LED register and reading it back, then again with 0xAA.  Note this would cause a false-positive with mempacks; detect other possible devices first!

-Zoinkity
